package com.cncytech.uiautomator_demo.policyinterface.impl;
/**
 * 硬件模块管控接口
 */
public interface HardwareModuleManagement {
    /**
     * @param mode ：功能模式
     *             0：禁止终端使用无线网络；
     *             1：只允许终端进行无线网络指纹扫描。
     * @return 成功返回 true；失败返回 false
     */
    public boolean setWlanPolicies(int mode);


    /**
     * @return 返回值为当前 WLAN 管控策略状态，参见 setWlanPolicies 方法的参数 mode。
     */
    public int getWlanPolicies();

    /**
     * @param mode 0：强制关闭终端的移动数据网络，且不允许用户开启；
     *             1：强制开启终端的移动数据网络，且不允许用户关闭；
     *             2：允许用户自主控制终端移动数据网络的开关
     * @return
     */
    public boolean setDataConnectivityPolicies(int mode);

    /**
     * @return 返回值为当前功能模式，参见 setDataConnectivityPolicies 方法的参数 mode
     */
    public int getDataConnectivityPolicies();

    /**
     * @param mode              0：不允许终端使用蓝牙；
     *                          1：仅允许与准许蓝牙连接列表内的蓝牙设备建立蓝牙连接，列表可根据目标设备的蓝牙 MAC地址进行定义。
     * @param bluetoothInfoList bluetoothInfoList：仅当 mode=1 时有效，数组中每一项为一个 JSON 格式字符串，格式如下：{"Mac":"00-11-22-33-44-55"}
     * @return
     */
    public boolean setBluetoothPolicies(int mode, String[] bluetoothInfoList);


    /**
     * @return 返回值为当前蓝牙管控策略状态
     * string[0]：功能模式，参见 setBluetoothPolicies 方法的 mode 参数。
     * string[1]至 string[n-1]：仅当 mode=1 时返回允许连接的特定蓝牙网络信息，参见
     * setBluetoothPolicies 方法的 BluetoothInfoList 参数
     */
    public String[] getBluetoothPolicies();

    /**
     * @param mode 0：不允许终端启用 NFC 功能；
     *             1：强制终端开启NFC功能；
     *             2：允许用户自主控制 NFC 功能的开关
     * @return
     */
    public boolean setNfcPolicies(int mode);

    /**
     * @return 返回值为当前功能模式，参见 setNfcPolicies 方法的参数 mode
     */
    public int getNfcPolicies();

    /**
     * @param mode 0：不允许终端使用红外功能；
     *             1：允许终端使用红外功能
     * @return
     */
    public boolean setIrPolicies(int mode);

    /**
     * @return 返回值为当前功能模式，参见 setIrPolicies 方法的参数 mode
     */
    public int getIrPolicies();

    /**
     * @param mode 0：禁止终端使用生物特征识别识别模块；
     *             1：允许终端使用生物特征识别模块
     * @return
     */
    public boolean setBiometricRecognitionPolicies(int mode);

    /**
     * @return 返回值为当前功能模式，参见 setBiometricRecognitionPolicies 方法的参数 mode。
     */
    public int getBiometricRecognitionPolicies();

    /**
     * @param mode 0：禁止终端使用定位服务；
     *             1：强制终端开启定位服务，且不允许关闭；
     *             2：不对定位服务的开关和使用进行控制
     * @return
     */
    public boolean setGpsPolicies(int mode);

    /**
     * @return 返回值为当前功能模式，参见 setGpsPolicies 方法的参数 mode。
     */
    public int getGpsPolicies();


    /**
     * @param mode 0：不允许终端通过 USB 接口进行数据传输，仅允许充电模式；
     *             1：不控制 USB 接口的工作模式，支持 MTP 模式、PTP 模式、HOST 模式进行数据传输与调试
     *             模式
     * @return
     */
    public boolean setUsbDataPolicies(int mode);

    /**
     * @return 返回值为当前功能模式，参见 setUsbDataPolicies 方法的参数 mode。
     */
    public int getUsbDataPolicies();

    /**
     * @param mode 0：不允许终端对扩展存储进行读写操作；
     *             1：仅允许终端对扩展存储进行读操作；
     *             2：允许终端对扩展存储进行读、写操作
     * @return
     */
    public boolean setExternalStoragePolicies(int mode);

    /**
     * @return 返回值为当前功能模式，参见 setExternalStoragePolicies 方法的参数 mode
     */
    public int getExternalStoragePolicies();

    /**
     * @param mode 0：不允许使用终端的麦克风；
     *             1：允许使用终端的麦克风
     * @return 成功返回 true；失败返回 false
     */
    public boolean setMicrophonePolicies(int mode);

    /**
     * @return 返回值为当前功能模式，参见 setMicrophonePolicies 方法的参数 mode。
     */
    public int getMicrophonePolicies();

    /**
     * @param mode 0：不允许使用终端的扬声器；
     *             1：允许使用终端的扬声器
     * @return
     */
    public boolean setSpeakerPolicies(int mode);


    /**
     * @return 返回值为当前功能模式，参见 setSpeakerPolicies 方法的参数 mode。
     */
    public int getSpeakerPolicies();

    /**
     * @param mode 0：不允许使用终端的摄像头；
     *             1：允许使用终端的摄像头
     * @return
     */
    public boolean setCameraPolicies(int mode);

    /**
     * @return 返回值为当前功能模式，参见 setCameraPolicies 方法的参数 mode。
     */
    public int getCameraPolicies();

    /**
     * @param mode 0：不允许使用终端的闪光灯；
     *             1：允许使用终端的闪光灯。
     * @return
     */
    public boolean setFlashPolicies(int mode);

    /**
     * @return 返回值为当前功能模式，参见 setFlashPolicies 方法的参数 mode
     */
    public int getFlashPolicies();

    /**
     * @param mode 0：不允许终端连接扩展外设；
     *             1：允许终端连接扩展外设。
     * @return
     */
    public boolean setPeripheralPolicies(int mode);

    /**
     * @return 返回值为当前功能模式，参见 setPeripheralPolicies 方法的参数 mode
     */
    public int getPeripheralPolicies();
}
